module MYMAC(
  input         clock,
  input         reset,
  input  [7:0]  io_macIO_dataIn,
  input  [31:0] io_macIO_accIn,
  input         io_macIO_switchw,
  input  [7:0]  io_macIO_weightIn,
  input         io_macIO_weightWe,
  input  [7:0]  io_macIO_weightTag,
  output [31:0] io_macIO_outDelay,
  output [7:0]  io_macIO_dataDelay,
  output        io_macIO_switchDelay,
  output [7:0]  io_macIO_weightDelay,
  output        io_macIO_weightWeDelay,
  output [7:0]  io_macIO_weightTagDelay
);
`ifdef RANDOMIZE_REG_INIT
  reg [31:0] _RAND_0;
  reg [31:0] _RAND_1;
  reg [31:0] _RAND_2;
  reg [31:0] _RAND_3;
  reg [31:0] _RAND_4;
  reg [31:0] _RAND_5;
  reg [31:0] _RAND_6;
  reg [31:0] _RAND_7;
  reg [31:0] _RAND_8;
`endif // RANDOMIZE_REG_INIT
  reg [7:0] wbuf1; // @[MAC.scala 45:29]
  reg [7:0] wbuf2; // @[MAC.scala 45:29]
  reg  currentBufferReg; // @[MAC.scala 46:33]
  wire  currenBuffer = currentBufferReg ^ io_macIO_switchw; // @[MAC.scala 51:39]
  wire  _T_2 = ~currenBuffer; // @[MAC.scala 54:22]
  wire [7:0] weight = _T_2 ? $signed(wbuf2) : $signed(wbuf1); // @[MAC.scala 61:19]
  wire [15:0] product = $signed(weight) * $signed(io_macIO_dataIn); // @[MAC.scala 62:24]
  wire [31:0] _GEN_5 = {{16{product[15]}},product}; // @[MAC.scala 63:21]
  wire [31:0] out = $signed(_GEN_5) + $signed(io_macIO_accIn); // @[MAC.scala 63:21]
  reg [7:0] io_macIO_dataDelay_REG; // @[MAC.scala 67:32]
  reg  io_macIO_switchDelay_REG; // @[MAC.scala 68:34]
  reg [31:0] io_macIO_outDelay_REG; // @[MAC.scala 69:31]
  reg [7:0] io_macIO_weightDelay_REG; // @[MAC.scala 70:34]
  reg  io_macIO_weightWeDelay_REG; // @[MAC.scala 71:36]
  wire [7:0] _io_macIO_weightTagDelay_T_1 = io_macIO_weightTag + 8'h1; // @[MAC.scala 72:58]
  reg [7:0] io_macIO_weightTagDelay_REG; // @[MAC.scala 72:37]
  assign io_macIO_outDelay = io_macIO_outDelay_REG; // @[MAC.scala 69:21]
  assign io_macIO_dataDelay = io_macIO_dataDelay_REG; // @[MAC.scala 67:22]
  assign io_macIO_switchDelay = io_macIO_switchDelay_REG; // @[MAC.scala 68:24]
  assign io_macIO_weightDelay = io_macIO_weightDelay_REG; // @[MAC.scala 70:24]
  assign io_macIO_weightWeDelay = io_macIO_weightWeDelay_REG; // @[MAC.scala 71:26]
  assign io_macIO_weightTagDelay = io_macIO_weightTagDelay_REG; // @[MAC.scala 72:27]
  always @(posedge clock) begin
    if (reset) begin // @[MAC.scala 45:29]
      wbuf1 <= 8'sh0; // @[MAC.scala 45:29]
    end else if (io_macIO_weightWe & io_macIO_weightTag == 8'h2) begin // @[MAC.scala 53:67]
      if (!(~currenBuffer)) begin // @[MAC.scala 54:29]
        wbuf1 <= io_macIO_weightIn; // @[MAC.scala 57:13]
      end
    end
    if (reset) begin // @[MAC.scala 45:29]
      wbuf2 <= 8'sh0; // @[MAC.scala 45:29]
    end else if (io_macIO_weightWe & io_macIO_weightTag == 8'h2) begin // @[MAC.scala 53:67]
      if (~currenBuffer) begin // @[MAC.scala 54:29]
        wbuf2 <= io_macIO_weightIn; // @[MAC.scala 55:13]
      end
    end
    if (reset) begin // @[MAC.scala 46:33]
      currentBufferReg <= 1'h0; // @[MAC.scala 46:33]
    end else if (io_macIO_switchw) begin // @[MAC.scala 47:25]
      currentBufferReg <= ~currentBufferReg; // @[MAC.scala 48:22]
    end
    if (reset) begin // @[MAC.scala 67:32]
      io_macIO_dataDelay_REG <= 8'sh0; // @[MAC.scala 67:32]
    end else begin
      io_macIO_dataDelay_REG <= io_macIO_dataIn; // @[MAC.scala 67:32]
    end
    if (reset) begin // @[MAC.scala 68:34]
      io_macIO_switchDelay_REG <= 1'h0; // @[MAC.scala 68:34]
    end else begin
      io_macIO_switchDelay_REG <= io_macIO_switchw; // @[MAC.scala 68:34]
    end
    if (reset) begin // @[MAC.scala 69:31]
      io_macIO_outDelay_REG <= 32'sh0; // @[MAC.scala 69:31]
    end else begin
      io_macIO_outDelay_REG <= out; // @[MAC.scala 69:31]
    end
    if (reset) begin // @[MAC.scala 70:34]
      io_macIO_weightDelay_REG <= 8'sh0; // @[MAC.scala 70:34]
    end else begin
      io_macIO_weightDelay_REG <= io_macIO_weightIn; // @[MAC.scala 70:34]
    end
    if (reset) begin // @[MAC.scala 71:36]
      io_macIO_weightWeDelay_REG <= 1'h0; // @[MAC.scala 71:36]
    end else begin
      io_macIO_weightWeDelay_REG <= io_macIO_weightWe; // @[MAC.scala 71:36]
    end
    if (reset) begin // @[MAC.scala 72:37]
      io_macIO_weightTagDelay_REG <= 8'h0; // @[MAC.scala 72:37]
    end else begin
      io_macIO_weightTagDelay_REG <= _io_macIO_weightTagDelay_T_1; // @[MAC.scala 72:37]
    end
  end
// Register and memory initialization
`ifdef RANDOMIZE_GARBAGE_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_INVALID_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_REG_INIT
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_MEM_INIT
`define RANDOMIZE
`endif
`ifndef RANDOM
`define RANDOM $random
`endif
`ifdef RANDOMIZE_MEM_INIT
  integer initvar;
`endif
`ifndef SYNTHESIS
`ifdef FIRRTL_BEFORE_INITIAL
`FIRRTL_BEFORE_INITIAL
`endif
initial begin
  `ifdef RANDOMIZE
    `ifdef INIT_RANDOM
      `INIT_RANDOM
    `endif
    `ifndef VERILATOR
      `ifdef RANDOMIZE_DELAY
        #`RANDOMIZE_DELAY begin end
      `else
        #0.002 begin end
      `endif
    `endif
`ifdef RANDOMIZE_REG_INIT
  _RAND_0 = {1{`RANDOM}};
  wbuf1 = _RAND_0[7:0];
  _RAND_1 = {1{`RANDOM}};
  wbuf2 = _RAND_1[7:0];
  _RAND_2 = {1{`RANDOM}};
  currentBufferReg = _RAND_2[0:0];
  _RAND_3 = {1{`RANDOM}};
  io_macIO_dataDelay_REG = _RAND_3[7:0];
  _RAND_4 = {1{`RANDOM}};
  io_macIO_switchDelay_REG = _RAND_4[0:0];
  _RAND_5 = {1{`RANDOM}};
  io_macIO_outDelay_REG = _RAND_5[31:0];
  _RAND_6 = {1{`RANDOM}};
  io_macIO_weightDelay_REG = _RAND_6[7:0];
  _RAND_7 = {1{`RANDOM}};
  io_macIO_weightWeDelay_REG = _RAND_7[0:0];
  _RAND_8 = {1{`RANDOM}};
  io_macIO_weightTagDelay_REG = _RAND_8[7:0];
`endif // RANDOMIZE_REG_INIT
  `endif // RANDOMIZE
end // initial
`ifdef FIRRTL_AFTER_INITIAL
`FIRRTL_AFTER_INITIAL
`endif
`endif // SYNTHESIS
endmodule
module MACArray(
  input         clock,
  input         reset,
  input  [7:0]  io_dataIn_0,
  input  [7:0]  io_dataIn_1,
  input  [7:0]  io_dataIn_2,
  input         io_switchw_0,
  input         io_switchw_1,
  input         io_switchw_2,
  input  [7:0]  io_weightIn_0,
  input  [7:0]  io_weightIn_1,
  input  [7:0]  io_weightIn_2,
  input         io_weightWe,
  output [31:0] io_dataOut_0,
  output [31:0] io_dataOut_1,
  output [31:0] io_dataOut_2
);
`ifdef RANDOMIZE_REG_INIT
  reg [31:0] _RAND_0;
  reg [31:0] _RAND_1;
`endif // RANDOMIZE_REG_INIT
  wire  MYMAC_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_1_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_1_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_1_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_1_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_1_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_1_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_1_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_1_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_1_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_1_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_1_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_1_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_1_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_1_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_2_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_2_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_2_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_2_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_2_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_2_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_2_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_2_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_2_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_2_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_2_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_2_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_2_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_2_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_3_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_3_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_3_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_3_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_3_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_3_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_3_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_3_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_3_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_3_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_3_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_3_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_3_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_3_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_4_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_4_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_4_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_4_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_4_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_4_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_4_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_4_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_4_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_4_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_4_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_4_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_4_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_4_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_5_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_5_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_5_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_5_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_5_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_5_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_5_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_5_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_5_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_5_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_5_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_5_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_5_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_5_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_6_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_6_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_6_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_6_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_6_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_6_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_6_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_6_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_6_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_6_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_6_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_6_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_6_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_6_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_7_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_7_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_7_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_7_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_7_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_7_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_7_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_7_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_7_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_7_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_7_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_7_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_7_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_7_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_8_clock; // @[MACArray.scala 21:15]
  wire  MYMAC_8_reset; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_8_io_macIO_dataIn; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_8_io_macIO_accIn; // @[MACArray.scala 21:15]
  wire  MYMAC_8_io_macIO_switchw; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_8_io_macIO_weightIn; // @[MACArray.scala 21:15]
  wire  MYMAC_8_io_macIO_weightWe; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_8_io_macIO_weightTag; // @[MACArray.scala 21:15]
  wire [31:0] MYMAC_8_io_macIO_outDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_8_io_macIO_dataDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_8_io_macIO_switchDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_8_io_macIO_weightDelay; // @[MACArray.scala 21:15]
  wire  MYMAC_8_io_macIO_weightWeDelay; // @[MACArray.scala 21:15]
  wire [7:0] MYMAC_8_io_macIO_weightTagDelay; // @[MACArray.scala 21:15]
  reg  programming; // @[MACArray.scala 25:30]
  reg [1:0] progstep; // @[MACArray.scala 26:27]
  wire  _GEN_0 = programming & progstep == 2'h2 ? 1'h0 : programming; // @[MACArray.scala 32:73 33:21 25:30]
  wire  _GEN_1 = io_weightWe & ~programming | _GEN_0; // @[MACArray.scala 30:48 31:21]
  wire [1:0] _progstep_T_1 = progstep + 2'h1; // @[MACArray.scala 37:30]
  MYMAC MYMAC ( // @[MACArray.scala 21:15]
    .clock(MYMAC_clock),
    .reset(MYMAC_reset),
    .io_macIO_dataIn(MYMAC_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_io_macIO_weightTagDelay)
  );
  MYMAC MYMAC_1 ( // @[MACArray.scala 21:15]
    .clock(MYMAC_1_clock),
    .reset(MYMAC_1_reset),
    .io_macIO_dataIn(MYMAC_1_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_1_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_1_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_1_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_1_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_1_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_1_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_1_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_1_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_1_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_1_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_1_io_macIO_weightTagDelay)
  );
  MYMAC MYMAC_2 ( // @[MACArray.scala 21:15]
    .clock(MYMAC_2_clock),
    .reset(MYMAC_2_reset),
    .io_macIO_dataIn(MYMAC_2_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_2_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_2_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_2_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_2_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_2_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_2_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_2_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_2_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_2_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_2_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_2_io_macIO_weightTagDelay)
  );
  MYMAC MYMAC_3 ( // @[MACArray.scala 21:15]
    .clock(MYMAC_3_clock),
    .reset(MYMAC_3_reset),
    .io_macIO_dataIn(MYMAC_3_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_3_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_3_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_3_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_3_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_3_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_3_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_3_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_3_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_3_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_3_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_3_io_macIO_weightTagDelay)
  );
  MYMAC MYMAC_4 ( // @[MACArray.scala 21:15]
    .clock(MYMAC_4_clock),
    .reset(MYMAC_4_reset),
    .io_macIO_dataIn(MYMAC_4_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_4_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_4_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_4_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_4_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_4_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_4_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_4_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_4_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_4_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_4_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_4_io_macIO_weightTagDelay)
  );
  MYMAC MYMAC_5 ( // @[MACArray.scala 21:15]
    .clock(MYMAC_5_clock),
    .reset(MYMAC_5_reset),
    .io_macIO_dataIn(MYMAC_5_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_5_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_5_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_5_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_5_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_5_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_5_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_5_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_5_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_5_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_5_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_5_io_macIO_weightTagDelay)
  );
  MYMAC MYMAC_6 ( // @[MACArray.scala 21:15]
    .clock(MYMAC_6_clock),
    .reset(MYMAC_6_reset),
    .io_macIO_dataIn(MYMAC_6_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_6_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_6_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_6_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_6_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_6_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_6_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_6_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_6_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_6_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_6_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_6_io_macIO_weightTagDelay)
  );
  MYMAC MYMAC_7 ( // @[MACArray.scala 21:15]
    .clock(MYMAC_7_clock),
    .reset(MYMAC_7_reset),
    .io_macIO_dataIn(MYMAC_7_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_7_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_7_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_7_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_7_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_7_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_7_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_7_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_7_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_7_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_7_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_7_io_macIO_weightTagDelay)
  );
  MYMAC MYMAC_8 ( // @[MACArray.scala 21:15]
    .clock(MYMAC_8_clock),
    .reset(MYMAC_8_reset),
    .io_macIO_dataIn(MYMAC_8_io_macIO_dataIn),
    .io_macIO_accIn(MYMAC_8_io_macIO_accIn),
    .io_macIO_switchw(MYMAC_8_io_macIO_switchw),
    .io_macIO_weightIn(MYMAC_8_io_macIO_weightIn),
    .io_macIO_weightWe(MYMAC_8_io_macIO_weightWe),
    .io_macIO_weightTag(MYMAC_8_io_macIO_weightTag),
    .io_macIO_outDelay(MYMAC_8_io_macIO_outDelay),
    .io_macIO_dataDelay(MYMAC_8_io_macIO_dataDelay),
    .io_macIO_switchDelay(MYMAC_8_io_macIO_switchDelay),
    .io_macIO_weightDelay(MYMAC_8_io_macIO_weightDelay),
    .io_macIO_weightWeDelay(MYMAC_8_io_macIO_weightWeDelay),
    .io_macIO_weightTagDelay(MYMAC_8_io_macIO_weightTagDelay)
  );
  assign io_dataOut_0 = MYMAC_6_io_macIO_outDelay; // @[MACArray.scala 75:23]
  assign io_dataOut_1 = MYMAC_7_io_macIO_outDelay; // @[MACArray.scala 75:23]
  assign io_dataOut_2 = MYMAC_8_io_macIO_outDelay; // @[MACArray.scala 75:23]
  assign MYMAC_clock = clock;
  assign MYMAC_reset = reset;
  assign MYMAC_io_macIO_dataIn = io_dataIn_0; // @[MACArray.scala 80:44]
  assign MYMAC_io_macIO_accIn = 32'sh0; // @[MACArray.scala 91:32]
  assign MYMAC_io_macIO_switchw = io_switchw_0; // @[MACArray.scala 81:45]
  assign MYMAC_io_macIO_weightIn = io_weightIn_0; // @[MACArray.scala 93:35]
  assign MYMAC_io_macIO_weightWe = programming; // @[MACArray.scala 24:25 44:22]
  assign MYMAC_io_macIO_weightTag = {{6'd0}, progstep}; // @[MACArray.scala 94:36]
  assign MYMAC_1_clock = clock;
  assign MYMAC_1_reset = reset;
  assign MYMAC_1_io_macIO_dataIn = MYMAC_io_macIO_dataDelay; // @[MACArray.scala 68:52]
  assign MYMAC_1_io_macIO_accIn = 32'sh0; // @[MACArray.scala 91:32]
  assign MYMAC_1_io_macIO_switchw = MYMAC_io_macIO_switchDelay; // @[MACArray.scala 69:53]
  assign MYMAC_1_io_macIO_weightIn = io_weightIn_1; // @[MACArray.scala 93:35]
  assign MYMAC_1_io_macIO_weightWe = programming; // @[MACArray.scala 24:25 44:22]
  assign MYMAC_1_io_macIO_weightTag = {{6'd0}, progstep}; // @[MACArray.scala 94:36]
  assign MYMAC_2_clock = clock;
  assign MYMAC_2_reset = reset;
  assign MYMAC_2_io_macIO_dataIn = MYMAC_1_io_macIO_dataDelay; // @[MACArray.scala 68:52]
  assign MYMAC_2_io_macIO_accIn = 32'sh0; // @[MACArray.scala 91:32]
  assign MYMAC_2_io_macIO_switchw = MYMAC_1_io_macIO_switchDelay; // @[MACArray.scala 69:53]
  assign MYMAC_2_io_macIO_weightIn = io_weightIn_2; // @[MACArray.scala 93:35]
  assign MYMAC_2_io_macIO_weightWe = programming; // @[MACArray.scala 24:25 44:22]
  assign MYMAC_2_io_macIO_weightTag = {{6'd0}, progstep}; // @[MACArray.scala 94:36]
  assign MYMAC_3_clock = clock;
  assign MYMAC_3_reset = reset;
  assign MYMAC_3_io_macIO_dataIn = io_dataIn_1; // @[MACArray.scala 80:44]
  assign MYMAC_3_io_macIO_accIn = MYMAC_io_macIO_outDelay; // @[MACArray.scala 60:53]
  assign MYMAC_3_io_macIO_switchw = io_switchw_1; // @[MACArray.scala 81:45]
  assign MYMAC_3_io_macIO_weightIn = MYMAC_io_macIO_weightDelay; // @[MACArray.scala 58:56]
  assign MYMAC_3_io_macIO_weightWe = MYMAC_io_macIO_weightWeDelay; // @[MACArray.scala 59:56]
  assign MYMAC_3_io_macIO_weightTag = MYMAC_io_macIO_weightTagDelay; // @[MACArray.scala 61:57]
  assign MYMAC_4_clock = clock;
  assign MYMAC_4_reset = reset;
  assign MYMAC_4_io_macIO_dataIn = MYMAC_3_io_macIO_dataDelay; // @[MACArray.scala 68:52]
  assign MYMAC_4_io_macIO_accIn = MYMAC_1_io_macIO_outDelay; // @[MACArray.scala 60:53]
  assign MYMAC_4_io_macIO_switchw = MYMAC_3_io_macIO_switchDelay; // @[MACArray.scala 69:53]
  assign MYMAC_4_io_macIO_weightIn = MYMAC_1_io_macIO_weightDelay; // @[MACArray.scala 58:56]
  assign MYMAC_4_io_macIO_weightWe = MYMAC_1_io_macIO_weightWeDelay; // @[MACArray.scala 59:56]
  assign MYMAC_4_io_macIO_weightTag = MYMAC_1_io_macIO_weightTagDelay; // @[MACArray.scala 61:57]
  assign MYMAC_5_clock = clock;
  assign MYMAC_5_reset = reset;
  assign MYMAC_5_io_macIO_dataIn = MYMAC_4_io_macIO_dataDelay; // @[MACArray.scala 68:52]
  assign MYMAC_5_io_macIO_accIn = MYMAC_2_io_macIO_outDelay; // @[MACArray.scala 60:53]
  assign MYMAC_5_io_macIO_switchw = MYMAC_4_io_macIO_switchDelay; // @[MACArray.scala 69:53]
  assign MYMAC_5_io_macIO_weightIn = MYMAC_2_io_macIO_weightDelay; // @[MACArray.scala 58:56]
  assign MYMAC_5_io_macIO_weightWe = MYMAC_2_io_macIO_weightWeDelay; // @[MACArray.scala 59:56]
  assign MYMAC_5_io_macIO_weightTag = MYMAC_2_io_macIO_weightTagDelay; // @[MACArray.scala 61:57]
  assign MYMAC_6_clock = clock;
  assign MYMAC_6_reset = reset;
  assign MYMAC_6_io_macIO_dataIn = io_dataIn_2; // @[MACArray.scala 80:44]
  assign MYMAC_6_io_macIO_accIn = MYMAC_3_io_macIO_outDelay; // @[MACArray.scala 60:53]
  assign MYMAC_6_io_macIO_switchw = io_switchw_2; // @[MACArray.scala 81:45]
  assign MYMAC_6_io_macIO_weightIn = MYMAC_3_io_macIO_weightDelay; // @[MACArray.scala 58:56]
  assign MYMAC_6_io_macIO_weightWe = MYMAC_3_io_macIO_weightWeDelay; // @[MACArray.scala 59:56]
  assign MYMAC_6_io_macIO_weightTag = MYMAC_3_io_macIO_weightTagDelay; // @[MACArray.scala 61:57]
  assign MYMAC_7_clock = clock;
  assign MYMAC_7_reset = reset;
  assign MYMAC_7_io_macIO_dataIn = MYMAC_6_io_macIO_dataDelay; // @[MACArray.scala 68:52]
  assign MYMAC_7_io_macIO_accIn = MYMAC_4_io_macIO_outDelay; // @[MACArray.scala 60:53]
  assign MYMAC_7_io_macIO_switchw = MYMAC_6_io_macIO_switchDelay; // @[MACArray.scala 69:53]
  assign MYMAC_7_io_macIO_weightIn = MYMAC_4_io_macIO_weightDelay; // @[MACArray.scala 58:56]
  assign MYMAC_7_io_macIO_weightWe = MYMAC_4_io_macIO_weightWeDelay; // @[MACArray.scala 59:56]
  assign MYMAC_7_io_macIO_weightTag = MYMAC_4_io_macIO_weightTagDelay; // @[MACArray.scala 61:57]
  assign MYMAC_8_clock = clock;
  assign MYMAC_8_reset = reset;
  assign MYMAC_8_io_macIO_dataIn = MYMAC_7_io_macIO_dataDelay; // @[MACArray.scala 68:52]
  assign MYMAC_8_io_macIO_accIn = MYMAC_5_io_macIO_outDelay; // @[MACArray.scala 60:53]
  assign MYMAC_8_io_macIO_switchw = MYMAC_7_io_macIO_switchDelay; // @[MACArray.scala 69:53]
  assign MYMAC_8_io_macIO_weightIn = MYMAC_5_io_macIO_weightDelay; // @[MACArray.scala 58:56]
  assign MYMAC_8_io_macIO_weightWe = MYMAC_5_io_macIO_weightWeDelay; // @[MACArray.scala 59:56]
  assign MYMAC_8_io_macIO_weightTag = MYMAC_5_io_macIO_weightTagDelay; // @[MACArray.scala 61:57]
  always @(posedge clock) begin
    if (reset) begin // @[MACArray.scala 25:30]
      programming <= 1'h0; // @[MACArray.scala 25:30]
    end else begin
      programming <= _GEN_1;
    end
    if (reset) begin // @[MACArray.scala 26:27]
      progstep <= 2'h0; // @[MACArray.scala 26:27]
    end else if (programming) begin // @[MACArray.scala 36:33]
      progstep <= _progstep_T_1; // @[MACArray.scala 37:18]
    end else begin
      progstep <= 2'h0; // @[MACArray.scala 39:18]
    end
  end
// Register and memory initialization
`ifdef RANDOMIZE_GARBAGE_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_INVALID_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_REG_INIT
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_MEM_INIT
`define RANDOMIZE
`endif
`ifndef RANDOM
`define RANDOM $random
`endif
`ifdef RANDOMIZE_MEM_INIT
  integer initvar;
`endif
`ifndef SYNTHESIS
`ifdef FIRRTL_BEFORE_INITIAL
`FIRRTL_BEFORE_INITIAL
`endif
initial begin
  `ifdef RANDOMIZE
    `ifdef INIT_RANDOM
      `INIT_RANDOM
    `endif
    `ifndef VERILATOR
      `ifdef RANDOMIZE_DELAY
        #`RANDOMIZE_DELAY begin end
      `else
        #0.002 begin end
      `endif
    `endif
`ifdef RANDOMIZE_REG_INIT
  _RAND_0 = {1{`RANDOM}};
  programming = _RAND_0[0:0];
  _RAND_1 = {1{`RANDOM}};
  progstep = _RAND_1[1:0];
`endif // RANDOMIZE_REG_INIT
  `endif // RANDOMIZE
end // initial
`ifdef FIRRTL_AFTER_INITIAL
`FIRRTL_AFTER_INITIAL
`endif
`endif // SYNTHESIS
endmodule
